package com.jckj.core.service;

import com.github.pagehelper.PageInfo;
import com.jckj.core.entity.OfficeUserKey;
import com.jckj.core.entity.OfficeUserView;
import com.jckj.core.entity.SysUser;
import com.jckj.core.exception.ServiceException;
import com.jckj.core.vos.OfficeUserQueryVo;
import com.jckj.core.vos.OfficeUserVo;

import javax.sql.rowset.serial.SerialException;
import java.util.List;

/**
 * @author 用户service
 * @date 2018-01-04
 */
public interface UserService {

    SysUser findById(String id);

    /**
     * 根据登录名查询登录用户
     * @param loginUsername
     * @return
     */
    SysUser findByLoginUsername(String loginUsername) throws ServiceException;

    /**
     * 查询用户权限
     * @param loginUsername
     * @return
     */
    List<String> findUserPermission(String loginUsername) throws ServiceException;

    /**
     * 增间用户
     * @param sysUser
     */
    void addOfficeUser(SysUser sysUser, OfficeUserKey officeUserKey) throws ServiceException;

    /**
     * 锁定用户
     * @param id
     */
    int lockUser(String id) throws ServiceException;

    /**
     * 重置密码
     * @param officeUserVo
     * @return
     */
    void resetPassword(OfficeUserVo officeUserVo);

    /**
     * 判断当头用户登录名称是否重复
     * @param userLoginName
     * @return
     * @throws ServiceException
     */
    long checkUserLoginName(String userLoginName) throws ServiceException;

    /**
     * 人员调动
     * @param userId
     * @param officeId
     * @return
     */
    int changeOffice(String userId, String officeId) throws ServiceException;


    /**
     *查询办公室人员
     * @return
     */
    List<SysUser> findOfficeWorker();

    /**
     * 查询办公室人员
     * @param officeUserQueryVo
     * @return
     */
    PageInfo<OfficeUserView> getOfficeUserList(OfficeUserQueryVo officeUserQueryVo);

    /**
     * 停用账户
     * @param officeUserVo
     */
    void disabledUser(OfficeUserVo officeUserVo);

    /**
     * 启用账户
     * @param officeUserVo
     */
    void enableUser(OfficeUserVo officeUserVo);

    /**
     * 更新办公室人员
     * @param officeUserVo
     */
    void updateOfficeUser(OfficeUserVo officeUserVo);

}
